﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;

namespace Vit.Web.Mvc
{
    public class TagBuilder2 : TagBuilder
    {
        public TagBuilder2(string tagName)
            : base(tagName)
        {
        }

        // Summary:
        //     Adds the specified CSS class to the tag-builder attributes.
        //
        // Parameters:
        //   value:
        //     The CSS class value string.

        public TagBuilder2 AddCssClass(string value)
        {
            base.AddCssClass(value);
            return this;
        }

        //
        // Summary:
        //     Generates the id attribute for the tag by using the specified name.
        //
        // Parameters:
        //   name:
        //     The name to use to generate the id value.
        public TagBuilder2 GenerateId(string name)
        {
            base.GenerateId(name);
            return this;
        }
        //
        // Summary:
        //     Adds an attribute to the tag by using the specified key/value pair.
        //
        // Parameters:
        //   key:
        //     The key.
        //
        //   value:
        //     The value.
        //
        // Exceptions:
        //   System.ArgumentException:
        //     The key parameter is null or empty.
        public TagBuilder2 MergeAttribute(string key, string value)
        {
            base.MergeAttribute(key, value);
            return this;
        }
        //
        // Summary:
        //     Adds an attribute to the tag by using the specified key/value pair.
        //
        // Parameters:
        //   key:
        //     The key.
        //
        //   value:
        //     The value.
        //
        //   replaceExisting:
        //     true to replace the existing attribute.
        //
        // Exceptions:
        //   System.ArgumentException:
        //     The key parameter is null or empty.
        public TagBuilder2 MergeAttribute(string key, string value, bool replaceExisting)
        {
            base.MergeAttribute(key, value, replaceExisting);
            return this;
        }
        //
        // Summary:
        //     Adds an attribute to the specified collection of attributes for the tag.
        //
        // Parameters:
        //   attributes:
        //     The attributes.
        //
        // Type parameters:
        //   TKey:
        //     The type of the key.
        //
        //   TValue:
        //     The type of the value.
        public TagBuilder2 MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes)
        {
            base.MergeAttributes(attributes);
            return this;
        }
        //
        // Summary:
        //     Adds an attribute to the specified collection of attributes for the tag.
        //
        // Parameters:
        //   attributes:
        //     The attributes.
        //
        //   replaceExisting:
        //     true to replace the existing attributes.
        //
        // Type parameters:
        //   TKey:
        //     The type of the key.
        //
        //   TValue:
        //     The type of the value.
        public TagBuilder2 MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes, bool replaceExisting)
        {
            base.MergeAttributes(attributes, replaceExisting);
            return this;
        }
        //
        // Summary:
        //     Sets the inner text of the tag (element).
        //
        // Parameters:
        //   innerText:
        //     The inner text for the tag (element).
        public TagBuilder2 SetInnerText(string innerText)
        {
            base.SetInnerText(innerText);
            return this;
        }
    }
}
